{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2.5 DeepLIFT"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tensorflow Walkthrough"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. Import Dependencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting MNIST_data/train-images-idx3-ubyte.gz\n",
      "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n",
      "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n",
      "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import re\n",
    "\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from tensorflow.python.ops import nn_ops, gen_nn_ops\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "\n",
    "from models.models_2_5 import MNIST_CNN\n",
    "from utils import pixel_range\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)\n",
    "images = mnist.train.images\n",
    "labels = mnist.train.labels\n",
    "\n",
    "logdir = './tf_logs/2_5_DL/'\n",
    "ckptdir = logdir + 'model'\n",
    "\n",
    "if not os.path.exists(logdir):\n",
    "    os.mkdir(logdir)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Building Graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with tf.name_scope('Classifier'):\n",
    "\n",
    "    # Initialize neural network\n",
    "    DNN = MNIST_CNN('CNN')\n",
    "\n",
    "    # Setup training process\n",
    "    X = tf.placeholder(tf.float32, [None, 784], name='X')\n",
    "    Y = tf.placeholder(tf.float32, [None, 10], name='Y')\n",
    "    training = tf.placeholder(tf.bool, name='training')\n",
    "    activations = DNN(X, training)\n",
    "    \n",
    "    X_ref = tf.placeholder(tf.float32, [None, 784], name='X_ref')\n",
    "    activations_ref = DNN(X_ref, training, reuse=True)\n",
    "    \n",
    "    tf.add_to_collection('DL', training)\n",
    "    tf.add_to_collection('DL', X)\n",
    "    tf.add_to_collection('DL_ref', X_ref)\n",
    "    \n",
    "    for activation in activations:\n",
    "        tf.add_to_collection('DL', activation)\n",
    "    \n",
    "    for activation in activations_ref:\n",
    "        tf.add_to_collection('DL_ref', activation)\n",
    "\n",
    "    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=activations[-1], labels=Y))\n",
    "\n",
    "    optimizer = tf.train.AdamOptimizer().minimize(cost, var_list=DNN.vars)\n",
    "\n",
    "    correct_prediction = tf.equal(tf.argmax(activations[-1], 1), tf.argmax(Y, 1))\n",
    "    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
    "\n",
    "cost_summary = tf.summary.scalar('Cost', cost)\n",
    "accuray_summary = tf.summary.scalar('Accuracy', accuracy)\n",
    "summary = tf.summary.merge_all()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Training Network\n",
    "\n",
    "This is the step where the DNN is trained to classify the 10 digits of the MNIST images. Summaries are written into the logdir and you can visualize the statistics using tensorboard by typing this command: `tensorboard --lodir=./tf_logs`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 0001 cost = 0.297054920 accuracy = 0.908781820\n",
      "Epoch: 0002 cost = 0.111595800 accuracy = 0.967036371\n",
      "Epoch: 0003 cost = 0.081733512 accuracy = 0.975145464\n",
      "Epoch: 0004 cost = 0.067652444 accuracy = 0.979690920\n",
      "Epoch: 0005 cost = 0.059420204 accuracy = 0.982072738\n",
      "Epoch: 0006 cost = 0.052106735 accuracy = 0.983563647\n",
      "Epoch: 0007 cost = 0.045873785 accuracy = 0.986454556\n",
      "Epoch: 0008 cost = 0.041894900 accuracy = 0.987490919\n",
      "Epoch: 0009 cost = 0.038917441 accuracy = 0.987454555\n",
      "Epoch: 0010 cost = 0.034085965 accuracy = 0.989127282\n",
      "Epoch: 0011 cost = 0.033599649 accuracy = 0.989200009\n",
      "Epoch: 0012 cost = 0.028438996 accuracy = 0.990472735\n",
      "Epoch: 0013 cost = 0.028430790 accuracy = 0.990963644\n",
      "Epoch: 0014 cost = 0.029002894 accuracy = 0.990527281\n",
      "Epoch: 0015 cost = 0.024741071 accuracy = 0.991709099\n",
      "Accuracy: 0.9911\n"
     ]
    }
   ],
   "source": [
    "sess = tf.InteractiveSession()\n",
    "sess.run(tf.global_variables_initializer())\n",
    "\n",
    "saver = tf.train.Saver()\n",
    "file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())\n",
    "\n",
    "# Hyper parameters\n",
    "training_epochs = 15\n",
    "batch_size = 100\n",
    "\n",
    "for epoch in range(training_epochs):\n",
    "    total_batch = int(mnist.train.num_examples / batch_size)\n",
    "    avg_cost = 0\n",
    "    avg_acc = 0\n",
    "    \n",
    "    for i in range(total_batch):\n",
    "        batch_xs, batch_ys = mnist.train.next_batch(batch_size)\n",
    "        _, c, a, summary_str = sess.run([optimizer, cost, accuracy, summary], feed_dict={X: batch_xs, Y: batch_ys, training: True})\n",
    "        avg_cost += c / total_batch\n",
    "        avg_acc += a / total_batch\n",
    "        \n",
    "        file_writer.add_summary(summary_str, epoch * total_batch + i)\n",
    "\n",
    "    print('Epoch:', '%04d' % (epoch + 1), 'cost =', '{:.9f}'.format(avg_cost), 'accuracy =', '{:.9f}'.format(avg_acc))\n",
    "    \n",
    "    saver.save(sess, ckptdir)\n",
    "\n",
    "print('Accuracy:', sess.run(accuracy, feed_dict={X: mnist.test.images, Y: mnist.test.labels, training: False}))\n",
    "\n",
    "sess.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. Restoring Subgraph\n",
    "\n",
    "Here we first rebuild the DNN graph from metagraph, restore DNN parameters from the checkpoint and then gather the necessary weight and biases for Deep Taylor Decomposition using the `tf.get_collection()` function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./tf_logs/2_5_DL/model\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "sess = tf.InteractiveSession()\n",
    "\n",
    "new_saver = tf.train.import_meta_graph(ckptdir + '.meta')\n",
    "new_saver.restore(sess, tf.train.latest_checkpoint(logdir))\n",
    "\n",
    "weights = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='.*kernel.*')\n",
    "activations = tf.get_collection('DL')\n",
    "activations_ref = tf.get_collection('DL_ref')\n",
    "\n",
    "training = activations.pop(0)\n",
    "X = activations.pop(0)\n",
    "X_ref = activations_ref.pop(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. Relevance Score Propagation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Calculating $\\Delta$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "delta = [activations[i] - activations_ref[i] for i in range(len(activations))]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from Output to 3rd Layer Activations: Linear Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "M = []\n",
    "C = []\n",
    "\n",
    "ind = tf.placeholder(tf.int32, [], 'index')\n",
    "\n",
    "D_4 = delta[7][:,ind,None]\n",
    "M_4_4 = tf.ones_like(D_4, dtype=tf.float32)\n",
    "C_4_4 = D_4 * M_4_4\n",
    "\n",
    "M.append(M_4_4)\n",
    "C.append(C_4_4)\n",
    "\n",
    "W_T = tf.transpose(weights[3][:,ind,None])\n",
    "W_T_p = tf.maximum(W_T, 0.)\n",
    "W_T_n = tf.minimum(W_T, 0.)\n",
    "\n",
    "D_3a = delta[6]\n",
    "D_3a_p = tf.where(0. < D_3a, tf.ones_like(D_3a, dtype=tf.float32), tf.zeros_like(D_3a, dtype=tf.float32))\n",
    "D_3a_n = tf.where(0. > D_3a, tf.ones_like(D_3a, dtype=tf.float32), tf.zeros_like(D_3a, dtype=tf.float32))\n",
    "D_3a_z = tf.where(tf.equal(0., D_3a), tf.ones_like(D_3a, dtype=tf.float32), tf.zeros_like(D_3a, dtype=tf.float32))\n",
    "\n",
    "M_3a_4 = tf.matmul(M_4_4, W_T_p) * D_3a_p + tf.matmul(M_4_4, W_T_n) * D_3a_n + \\\n",
    "         tf.matmul(M_4_4, W_T_p) * D_3a_n + tf.matmul(M_4_4, W_T_n) * D_3a_p + \\\n",
    "         tf.matmul(0.5 * (M_4_4 + M_4_4), W_T) * D_3a_z\n",
    "\n",
    "C_3a_4 = D_3a * M_3a_4\n",
    "\n",
    "M.append(M_3a_4)\n",
    "C.append(C_3a_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from 3rd Layer Activations to 3rd Layer Pre-Activations: Rescale Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "D_3a = delta[6]\n",
    "D_3p = delta[5]\n",
    "\n",
    "M_3p_3a = tf.where(tf.equal(0., D_3p), tf.gradients(activations[6], activations[5])[0], D_3a / D_3p)\n",
    "M_3p_4 = M_3p_3a * M_3a_4\n",
    "\n",
    "C_3p_4 = D_3p * M_3p_4\n",
    "\n",
    "M.append(M_3p_4)\n",
    "C.append(C_3p_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from 3rd Layer Pre-Activations to 2nd Layer Activations: Linear Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "W_T = tf.transpose(weights[2])\n",
    "W_T_p = tf.maximum(W_T, 0.)\n",
    "W_T_n = tf.minimum(W_T, 0.)\n",
    "\n",
    "D_2a = tf.reshape(delta[4], [-1, 7 * 7 * 64])\n",
    "D_2a_p = tf.where(0. < D_2a, tf.ones_like(D_2a, dtype=tf.float32), tf.zeros_like(D_2a, dtype=tf.float32))\n",
    "D_2a_n = tf.where(0. > D_2a, tf.ones_like(D_2a, dtype=tf.float32), tf.zeros_like(D_2a, dtype=tf.float32))\n",
    "D_2a_z = tf.where(tf.equal(0., D_2a), tf.ones_like(D_2a, dtype=tf.float32), tf.zeros_like(D_2a, dtype=tf.float32))\n",
    "\n",
    "M_2a_4 = tf.matmul(M_3p_4, W_T_p) * D_2a_p + tf.matmul(M_3p_4, W_T_n) * D_2a_n + \\\n",
    "         tf.matmul(M_3p_4, W_T_p) * D_2a_n + tf.matmul(M_3p_4, W_T_n) * D_2a_p + \\\n",
    "         tf.matmul(M_3p_4, W_T) * D_2a_z\n",
    "\n",
    "C_2a_4 = D_2a * M_2a_4\n",
    "\n",
    "M.append(M_2a_4)\n",
    "C.append(C_2a_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from 2nd Layer Activations to 2nd Layer Pre-Activations: Rescale Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "D_2a = delta[4]\n",
    "D_2p = delta[3]\n",
    "\n",
    "M_2p_2a = tf.where(tf.equal(0., D_2p), tf.gradients(activations[4], activations[3])[0], D_2a / D_2p)\n",
    "M_2p_4 = M_2p_2a * tf.reshape(M_2a_4, [-1, 7, 7, 64])\n",
    "\n",
    "C_2p_4 = D_2p * M_2p_4\n",
    "\n",
    "M.append(M_2p_4)\n",
    "C.append(C_2p_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from 2nd Layer Pre-Activations to 1st Layer Activations: Linear Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "W = weights[1]\n",
    "W_p = tf.maximum(W, 0.)\n",
    "W_n = tf.minimum(W, 0.)\n",
    "\n",
    "D_1a = delta[2]\n",
    "D_1a_p = tf.where(0. < D_1a, tf.ones_like(D_1a, dtype=tf.float32), tf.zeros_like(D_1a, dtype=tf.float32))\n",
    "D_1a_n = tf.where(0. > D_1a, tf.ones_like(D_1a, dtype=tf.float32), tf.zeros_like(D_1a, dtype=tf.float32))\n",
    "D_1a_z = tf.where(tf.equal(0., D_1a), tf.ones_like(D_1a, dtype=tf.float32), tf.zeros_like(D_1a, dtype=tf.float32))\n",
    "\n",
    "M_1a_4 = tf.nn.conv2d_transpose(M_2p_4, W_p, tf.shape(D_1a), [1,2,2,1]) * D_1a_p + \\\n",
    "         tf.nn.conv2d_transpose(M_2p_4, W_n, tf.shape(D_1a), [1,2,2,1]) * D_1a_n + \\\n",
    "         tf.nn.conv2d_transpose(M_2p_4, W_p, tf.shape(D_1a), [1,2,2,1]) * D_1a_n + \\\n",
    "         tf.nn.conv2d_transpose(M_2p_4, W_n, tf.shape(D_1a), [1,2,2,1]) * D_1a_p + \\\n",
    "         tf.nn.conv2d_transpose(M_2p_4, W, tf.shape(D_1a), [1,2,2,1]) * D_1a_z\n",
    "\n",
    "C_1a_4 = D_1a * M_1a_4\n",
    "\n",
    "M.append(M_1a_4)\n",
    "C.append(C_1a_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from 1st Layer Activations to 1st Layer Pre-Activations: Rescale Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "D_1a = delta[2]\n",
    "D_1p = delta[1]\n",
    "\n",
    "M_1p_1a = tf.where(tf.equal(0., D_1p), tf.gradients(activations[2], activations[1])[0], D_1a / D_1p)\n",
    "M_1p_4 = M_1p_1a * M_1a_4\n",
    "\n",
    "C_1p_4 = D_1p * M_1p_4\n",
    "\n",
    "M.append(M_1p_4)\n",
    "C.append(C_1p_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Propagation from 1st Layer Pre-Activations to Image: Linear Rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "W = weights[0]\n",
    "W_p = tf.maximum(W, 0.)\n",
    "W_n = tf.minimum(W, 0.)\n",
    "\n",
    "D_0 = delta[0]\n",
    "D_0_p = tf.where(0. < D_0, tf.ones_like(D_0, dtype=tf.float32), tf.zeros_like(D_0, dtype=tf.float32))\n",
    "D_0_n = tf.where(0. > D_0, tf.ones_like(D_0, dtype=tf.float32), tf.zeros_like(D_0, dtype=tf.float32))\n",
    "D_0_z = tf.where(tf.equal(0., D_0), tf.ones_like(D_0, dtype=tf.float32), tf.zeros_like(D_0, dtype=tf.float32))\n",
    "\n",
    "M_0_4 = tf.nn.conv2d_transpose(M_1p_4, W_p, tf.shape(D_0), [1,2,2,1]) * D_0_p + \\\n",
    "         tf.nn.conv2d_transpose(M_1p_4, W_n, tf.shape(D_0), [1,2,2,1]) * D_0_n + \\\n",
    "         tf.nn.conv2d_transpose(M_1p_4, W_p, tf.shape(D_0), [1,2,2,1]) * D_0_n + \\\n",
    "         tf.nn.conv2d_transpose(M_1p_4, W_n, tf.shape(D_0), [1,2,2,1]) * D_0_p + \\\n",
    "         tf.nn.conv2d_transpose(M_1p_4, W, tf.shape(D_0), [1,2,2,1]) * D_0_z\n",
    "\n",
    "C_0_4 = D_0 * M_0_4\n",
    "\n",
    "M.append(M_0_4)\n",
    "C.append(C_0_4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6. Calculating Relevance Scores $R(x_i)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2364d06f3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sample_imgs = [images[np.argmax(labels, axis=1) == i][5] for i in range(10)]\n",
    "ref_img = np.zeros([1, 784])\n",
    "\n",
    "res = []\n",
    "for i in range(10):\n",
    "    res.append(sess.run(C[-1], feed_dict={X: sample_imgs[i].reshape(1,784), X_ref: ref_img, training: False, ind: i}))\n",
    "\n",
    "\n",
    "plt.figure(figsize=(15,15))\n",
    "for i in range(5):\n",
    "    plt.subplot(5, 2, 2 * i + 1)\n",
    "    vmin, vmax = pixel_range(res[2 * i])\n",
    "    plt.imshow(np.reshape(res[2 * i], [28, 28]), vmin=vmin, vmax=vmax, cmap='bwr')\n",
    "    plt.title('Digit: {}'.format(2 * i))\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.colorbar()\n",
    "    \n",
    "    plt.subplot(5, 2, 2 * i + 2)\n",
    "    vmin, vmax = pixel_range(res[2 * i + 1])\n",
    "    plt.imshow(np.reshape(res[2 * i + 1], [28, 28]), vmin=vmin, vmax=vmax, cmap='bwr')\n",
    "    plt.title('Digit: {}'.format(2 * i + 1))\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.colorbar()\n",
    "\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
